iT邦幫忙

2024 iThome 鐵人賽

DAY 1
1
Software Development

Datomic,內建事件溯源的資料庫。系列 第 1

序:客戶說我是個異端邪說

  • 分享至 

  • xImage
  •  

大多數的思想領袖都曾經被認為是異端邪說。

-- Alan Weiss (Million Dollar Consulting 作者)

我是 IT 顧問,通常在協助客戶完成專案的時候,也有機會得到客戶的一些評語,今年得到了客戶如下的評論:

老師,你居然做得到我們銀行的生意,這簡直是不可能的事。我們這邊整間銀行都充滿了保守的主流思想,相較之下,你簡直就是個邪教教主…。

聽到客戶這樣子誇獎我,「桃李不言,下自成蹊」這句屁到曾經被我的前主管怒斥不已的幹話,又熊熊差點說出口。唉,我只不過是建議銀行使用現代資料棧 (modern data stack) 來取代 shell script 與 stored procedure 而已。

由於已經是第三次得到這種評語,我決定來跟大家談談異端的極致 --- Datomic 資料庫。

事件溯源

2024 年,Datomic 在 db-engine 網站上,總排名 143, 關係型資料庫排名 67 (註1)。不過,其實 db-engine 網站上有一些特殊類別,比方說,Event Stores, Graph DBMS, Time Series DBMS 等。不知道什麼原因,Datomic 並沒有被 db-engine 網站視為是 Event Stores 資料庫,但是,如果有列入的話,我認為,Datomic 很有機會在這個 Event Stores 的類別排名第 1 位。

既然我主張 Datomic 可以被歸類為事件儲存 (Event Stores) 的資料庫,它當然是支援事件溯源 (event sourcing) 這種特殊功能了。

OLTP

讀者可能以為我的建議是:「如果需要建構大規模的分散式系統、要實作事件溯源時,可以考慮 Datomic。」並不是。我的建議是:「要不要考慮下一個專案就用 Datomic 來取代傳統的關係型資料庫?如果下一個專案只是一般的 OLTP 應用的話。」(註2)

更換資料庫是很難的事情。許多公司都是等到系統已經大致建立了,才設法要做出事件溯源之類的功能,以做到水平擴展 (scale out)。如果最初就有考慮到,日後可能要建構分散式系統的話,要不要在專案的最初就把基礎打好呢?

當然,要做技術選型,有許多重要的考量:

  • 它的查詢語言 (query language) 如何?好用嗎?
  • 它有工業強度嗎?
  • 容易上手嗎?
  • 機器的效能如何?
  • 有大公司敢用它嗎?

我們會在之後的文章一一探討。

註:

  1. Datomic 算不算關係型資料庫這件事,其實有討論的空間。由於 Datomic 提供的查詢語言是 Datalog ,確實跟 SQL 有些差異,但是表達能力至少是等價的。
  2. 如果你的專案是 OLAP 應用,歡迎參考我去年的文章:當代資料工程與資料分析

其它資源:

  1. 歡迎訂閱PruningSuccess電子報,主要談論軟體開發、資料處理、資料分析等議題。
  2. 歡迎加入Clojure社群

下一篇
事件溯源
系列文
Datomic,內建事件溯源的資料庫。30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言